In many data processor applications, several devices may occasionally request the exclusive use of a single shared resource. The most common single shared resource in the field of digital computing systems is a shared communications bus. For example, a communications bus may interconnect a data processor, a memory subsystem, a video graphics driver subsystem and various input/output ("I/O") subsystems. Each of these devices may occasionally need to exclusively use the communications bus to transfer data between devices. Also, two or more of these devices may occasionally need to exclusively use the communications bus at the same time.
A resource arbitrator is a device that resolves simultaneous requests for a single resource according to a resource arbitration protocol. A resource arbitration protocol is a set of rules that specifies which resource user is granted the exclusive use of a particular resource given all possible combinations of requests for the resource. Therefore, a bus arbitrator resolves simultaneous requests for a single communications bus according to a bus arbitration protocol.
Arbitration protocols, in general, and bus arbitration protocols, in particular, are designed to treat all resource users equally. However, in some applications it is more critical that certain resource users have access to the shared resource before other resource users. In other cases, it may be more important that a member of a first group of resource users uses the shared resource before any member of a second group of resource users, where all resource users are in the first or second group.